#include <stdio.h>
#include <stdlib.h>
#include <acev/rcu.h>
#include<signal.h>

main()
{
  // Marker f"ur Zeitmessung
  unsigned long long start, stop, rcu_get_ticks();
  // Zeiger auf RC-Adressraum
  volatile unsigned long *rc;

  // TODO Hier weitere Variablen definieren
  // **** ...

  // TODO Hier Eingabedaten lesen
  // **** ...

  // RC initialisieren
  rcu_init();
  // Zeiger auf RC-Adressraum holen
  rc = rcu_get_s0(NULL);

  // Merke Startzeit der Berechnung
  start = rcu_get_ticks();
        
  // TODO Hier Daten bearbeiten
  // **** ...

       
  rc[0] = 0x00000008;
  rc[1] = 0x00000003;

  rc[2] = 0x0000000B;
  rc[3] = 0x00000002;

  rc[4] = 0x000000FF;
  rc[5] = 0x00000010;

  rc[6] = 0x000000FF;
  rc[7] = 0x00000011;

  printf("\r\n");

  printf("teile 8 durch 3");
  printf("\r\n"); 
  printf("quot = %08x\n", rc[1]);
  printf("remd = %08x\n", rc[0]);

  printf("\r\n");
  printf("teile 11 durch 2");
  printf("\r\n"); 
  printf("quot = %08x\n", rc[3]);
  printf("remd = %08x\n", rc[2]);

  printf("\r\n");   
  printf("teile 255 durch 16"); 
  printf("\r\n"); 
  printf("quot = %08x\n", rc[5]);
  printf("remd = %08x\n", rc[4]);

  printf("\r\n");  
  printf("teile 255 durch 17"); 
  printf("\r\n"); 
  printf("quot = %08x\n", rc[7]);
  printf("remd = %08x\n", rc[6]);

  // merke Stopzeit
  stop = rcu_get_ticks();

  // TODO Hier Ausgabedaten schreiben
  // **** ...
        
  // Gebe Ergebnis der Zeitmessung in Mikrosekunden aus
  printf("Zeit: %lld us\n", (stop-start)/TICKS_PER_USEC);
}
